﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades;
using AccesoBD;

namespace LogicaNegocio
{
    public class GestorAgendaTurnos
    {
        public static void actualizarEstadoTurno(long idTurno, int estado) { AgendasTurnos.actualizarEstadoTurno(idTurno, estado); }
        public static void actualizarEstadoOrdenLLegada(long nroOrden, int estado) { AgendasTurnos.actualizarEstadoOrdenLLegada(nroOrden, estado); }
     
        public List<Turno> obtenerTurnosALaFechaPorMedico(long legajo, int idEsp,DateTime fecha) 
        {
            return AgendasTurnos.obtenerTurnosALaFechaPorMedico(legajo,idEsp,fecha);
        }
        public List<FechaImportante> obtenerFeriadosAñoVigente()
        {
            return AgendasTurnos.obtenerFeriadosAñoVigente();
        }

        public List<HorarioAtencion> obtenerHorariosVigentesEspecialidadMedico(EspecialidadMedico espMed)
        {
            return AgendasTurnos.obtenerHorariosVigentesEspecialidadMedico(espMed);
        }
        public bool registrarTurnosDefinitivos(List<Turno> listaTurnos)
        {
            return AgendasTurnos.registrarNuevosTurnos(listaTurnos);
        }
        public static List<EstadoTurno> obtenerEstadosTurno()
        {
            return AgendasTurnos.obtenerEstadosTurno();
        }
        public static List<Consultorio> obtenerConsultorios()
        {
            return AgendasTurnos.obtenerConsultorios();
        }
        public static List<Turno> obtenerTurnosPorFechaManiana(DateTime fecha)
        {
            return AgendasTurnos.obtenerTurnosPorFechaManiana(fecha);
        }
        public static List<Turno> obtenerTurnosPorFechaTarde(DateTime fecha)
        {
            return AgendasTurnos.obtenerTurnosPorFechaTarde(fecha);
        }
        public static List<EspecialidadMedico> obtenerEspecialidadesMedicoFecha(DateTime fecha)
        {
            return AgendasTurnos.obtenerEspecialidadMedicoFecha(fecha);
        }
        public static List<EspecialidadMedico> obtenerEspecialidadesMedicoFecha2Maniana(DateTime fecha,int idDia)
        {
            return AgendasTurnos.obtenerEspecialidadMedicoFecha2Maniana(fecha, idDia);
        }
        public static List<EspecialidadMedico> obtenerEspecialidadesMedicoFecha2Tarde(DateTime fecha, int idDia)
        {
            return AgendasTurnos.obtenerEspecialidadMedicoFecha2Tarde(fecha, idDia);
        }
        //OBTENEMOS EL TURNO POR ID
        public static Turno obtenerTurnoPorID(long idTurno)
        {
            return AgendasTurnos.obtenerTurnoPorIdTurno(idTurno);
        }
        //ASIGNAMOS UN TURNO AL PACIENTE
        public static bool asignarTurno(long nrHC, long idPaciente, int estadoTurno, long idTurno)
        {
            return AgendasTurnos.asignarTurnoPorId(nrHC, idPaciente, estadoTurno, idTurno);
        }

        //obtiene el nombre y el nroHC del paciente del turno solicitado
        public static Turno obtenerPacienteTurno(long idTurno)
        {
            return AgendasTurnos.obtenerPacienteTurno(idTurno);
        }

        //obtiene el nombre y el nroHC del paciente del turno solicitado
        public static Turno obtenerPacienteTurno(Turno t)
        {
            return AgendasTurnos.obtenerPacienteTurno(t);
        }

        //registramos la llegada a un turno, y puede tener el estado de "asistido y cobrado"
        public static bool registrarLlegadaTurno(long idTurno, Turno t)
        {
            return AgendasTurnos.registrarLlegadaTurno(idTurno, t);
        }
        public static TipoModalidad obtenerTipoModalidadPorDiaYMedico(long lega, int dia, TimeSpan hora)
        {
            return AgendasTurnos.tipoModalidadPorEspecialidadYMedico(lega, dia, hora);

        }
        public static List<Turno> obtenerTurnoPorSemanaPorMedico(long legajo, DateTime fechaDesde, DateTime fechaHasta, TimeSpan horaDesde, TimeSpan horaHasta) 
        {
            return AgendasTurnos.obtenerTurnosParaLaSemanaPorMedico(legajo, fechaDesde, fechaHasta,horaDesde,horaHasta);
        }
        public static List<Turno> obtenerTurnoPorFechaYMedico(DateTime fecha, long legajo) 
        {
            return AgendasTurnos.obtenerTurnosPorFechaYMedico(fecha, legajo);
        
        }
        public static List<EspecialidadMedico> obtenerEspecialidadesXFechaYMedico(DateTime fecha, int nrodia,long legajo) 
        {
            return AgendasTurnos.obtenerEspecialidadMedicoFechaXMedico(fecha, nrodia, legajo);
        }

        //barby
        /// <summary>
        /// Busca y obtiene los turnos por una semana contando desde la fecha desde, para la especialidad
        /// y médicos solicitados.
        /// </summary>
        /// <returns>Lista de turnos para la semana solicitada</returns>
        public static List<Turno> obtenerTurnosSemana(DateTime fechaDesde, int codEsp, long legajo)
        {
            return AgendasTurnos.obtenerTurnosSemana(fechaDesde, codEsp, legajo);
        }

        public static Turno obtenerDatosRecordatorioTurno(long idturno)
        {
            return AgendasTurnos.obtenerDatosRecordatorioTurno(idturno);
        }

        //metodos para pago medico
        public static List<Turno> obtenerTurnosAtendidosHoyMedico(int codEsp, long legajo)
        {
            return AgendasTurnos.obtenerTurnosAtendidosPorMedicoEnElDia(codEsp, legajo);
        }
    }
}
